package com.kele.service;

import com.kele.domain.Blog;
import com.kele.domain.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BlogService {

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:31 查询所有博客对象
     * @return java.util.List<com.kele.domain.Blog>
      */
    List<Blog> findBlogs(@Param("pageNum") int pageNum, @Param("dataNums") int dataNums);

    /**
     * 根据id查询博客
     * @param bid,id
     * @return
     */
    Blog queryById(int bid,int id);

    /**
     * 根据id查找博客
     * @param bid
     * @return
     */
    Blog findBlogByBid(@Param(value = "bid") int bid);

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:32 根据博客类型查询博客对象
     * @param field
     * @return java.util.List<com.kele.domain.Blog>
      */
    List<Blog> findByTitle( @Param("field") String field);

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:32 删除博客对象
     * @param id
     * @return int
      */
    int deleteBlog(int id);

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:32 点赞+1
     * @param bid
     * @return int
      */
    int addThumbsUp(int bid);

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:33 点赞-1
     * @param bid
     * @return int
      */
    int subThumbsUp(int bid);

    /**
     * 发布博客
     * @param blog
     * @return
     */
    Integer addBlog(Blog blog);

    /**
      *@author 赵奥林
      *@description 2021/5/27 23:33 增加热度
     * @param id
     * @return int
      */
    int addDoh(int id);

    /**
     * 根据id查询博客
     * @param bid
     * @return
     */
    Blog findBlogById(int bid);

    /**
     * 展示博客内容到页面上
     * @return
     */
    List<Blog> showBlogs();

    int countArticle(String blogger);

    /**
     * 收藏+1
     *
     * @return
     */
    int addCollection(int id);

    /**
     * 收藏-1
     *
     * @return
     */
    int subCollection(int id);

    /**
     * 博主下遍历博客
     * @param blogger
     * @return
     */
    List<Blog> findBlogsByBlogger(String blogger);


    /**
     *
     * @param blogger 博主的昵称
     * @param bid 博客id
     * @return 返回一个博客类
     */
    Blog undeterminedBlogs(@Param("blogger") String blogger,@Param("bid") int bid);

    /**
     * 找出未正在待定的文章
     * @param blogger 博主
     * @param bid 查找出文章的id
     * @param flag 表示文章的类型
     * @return 集合--》包含所有的未审核的文章
     */
    List<Blog> selectExamineBlogs(@Param("Blog") String blogger,@Param("bid") int bid,@Param("flag") int flag);

    /**
     * 使得博客通过审核
     * @param bid 博客的id-->唯一表示
     * @param flag 表示操作对象
     * @return 一个数据，如果为1则表示修改成功
     */
    int executeBlog(@Param("bid") int bid,@Param("flag") int flag);

    /**
     *  根据博客的id 找到博客的所有信息
     *  用于相应的专挑等操作
     * @param bid 博客文章的id
     * @return 一个包含所有信息的博客类
     */
    Blog findBlogsByBid(int bid);



    /**
     * 批量删除博客
     * @param bids
     * @return
     */
    int deleteArray(Integer[] bids);


    /**
     * 查询--》根据类型
     * @param type 文章类型
     * @return 哟个集合，包含了该类型的内容
     */
    List<Blog> classify(String type);

    /**
     * 后台管理博客模糊查询(根据属性)
     * @return
     */
    List<User> fuzzyBolg(String attribute);



}

